package com.longrise.android.byjk.plugins.request;

import android.os.Bundle;

/**
 * Created by sujizhong on 2016/12/20.
 * 请求实体，包含
 * {
 * 1.请求地址
 * 2.请求数据结构
 * 3.请求类型
 * }
 */
public abstract class AppBaseRequest {

    public static final int APP_REQUEST_TAG = -10; //默认

    /**
     * @param requestType 请求类型
     *                    设置请求类型
     */
    public void setRequestType(String requestType) {
    }

    /**
     * @return str 返回请求类型
     */
    public String getRequestType() {
        return null;
    }

    /**
     * @param tag         默认使用API区分不同接口，如果存在同一个API修改不同数据，则采用该参数
     *                    区分接口 如果不需要该属性 传递《AppBaseRequest.APP_REQUEST_TAG》 即可
     * @param extraParams 附加参数 如果请求中含有其他参数传递该Bundle，如果不需要该属性传递null即可
     */
    public  Object getRequestParams(int tag, Bundle extraParams){
        return extraParams;
    }

    /**
     * @param extraParams 附加参数
     *                    如果请求中需要附加参数，使用该方法
     * */
    public Object getRequestParams(Bundle extraParams){
        return extraParams;
    }

    /**
     * 获取请求实体 默认必须重写该方法
     * 接口中存在附加参数需要在Activity中传递，此时请复写 getRequestParams(Bundle extraParams) 该方法
     * 如果仅从API无法区分接口操作时(同一个接口修改不同数据时)，此时请复写 getRequestParams(int tag, Bundle extraParams) 该方法
     * */
    public abstract Object getRequestParams();

    /**
     * @return setResult(AppBaseResult result)中的参数
     */
    public abstract AppBaseResult getResult();

    /**
     * @param result 回调 必须要设置该result,否则无法获知请求结果
     *               设置回调解析
     */
    public abstract void setResult(AppBaseResult result);

    /**
     * @return setApi(String api)中参数
     */
    public abstract String getApi();

    /**
     * @param api 请求api  必须设置该请求api，否则无法访问服务
     *            设置当前请求的api
     */
    public abstract void setApi(String api);

}
